package com.earthea.application.common.enums;

import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;

public interface IBaseDict<T extends IBaseDict<T>> {

    int getValue();

    String getLabel();

    T[] getValues();

    T getDefault();

    default String getLabel(int value) {
        return Arrays.stream(getValues()).filter(type -> type.getValue() == value).findFirst().map(IBaseDict::getLabel).orElse(getDefault().getLabel());
    }

    default int getValue(String label) {
        return Arrays.stream(getValues()).filter(type -> StringUtils.equals(type.getLabel(), label)).findFirst().map(IBaseDict::getValue).orElse(getDefault().getValue());
    }

}
